import 'dart:async';

/// Future
/// Stream
/// 对于Timer 和miroctask的封装
/// 设计一条链
/// 正常执行完成 whenComplete
/// 出现错误 onError
void main(){
  print("begin....");
  // testFuture();
  // Future f = Future.sync(() {
  //   print("future sync create ...");
  //   return Future(() => 123);
  // }).then((value) => print("future sync then 1"));

  Future f = Future.value(123).then((value) => print("future sync then 1 $value"));

  scheduleMicrotask(() {
    print("ScheduleMicrotask - A - in Timer A");
  });

  print("end....");
}
/// 每一次的链式调用，都是重新给事件队列添加一个对象数据
void testFuture(){
  Future f = Future((){
    print("future....");
    return 100;
  }).then((value){
    // throw Error();
    print("value:$value");
  })
  .catchError((error, stackTrace) {
    print("出错了....");
  })
  .whenComplete(() => print("完成"));

  Future f2 = Future.microtask((){
    print("future2....");
    return 100;
  }).then((value){
    // throw Error();
    print("value2:$value");
  });


}